package com.huanghuai.retail.common;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * 元数据对象处理器：为自动填充公共字段实现的类。
 *  加入@Component注解，让springboot识别到
 *  实现 MetaObjectHandler，以及方法
 */

/**
 * 在自动输入时要先判断一下当前表是否有这个字段，如果有就自动输入，没有则忽略
 */
@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {

    //插入时执行
    @Override
    public void insertFill(MetaObject metaObject) {
        //这里会拦截到insert操作以及数据，在这里给字段赋值。 字段名， 赋值
        if (metaObject.hasSetter("createTime"))
            metaObject.setValue("createTime", LocalDateTime.now());
        if (metaObject.hasSetter("updateTime"))
            metaObject.setValue("updateTime", LocalDateTime.now());
//        metaObject.setValue("status",1);
        if (metaObject.hasSetter("createUser"))
            metaObject.setValue("createUser", 1L);
        if (metaObject.hasSetter("updateUser"))
            metaObject.setValue("updateUser", 1L);
    }

    //更新时执行
    @Override
    public void updateFill(MetaObject metaObject) {
        if (metaObject.hasSetter("updateTime"))
            metaObject.setValue("updateTime", LocalDateTime.now());
        if (metaObject.hasSetter("updateUser"))
            metaObject.setValue("updateUser", 1L);
    }
}
